home *** CD-ROM | disk | FTP | other *** search
/ Programmer Power Tools / Programmer Power Tools.iso / editor / j414src.arc / FP.H < prev    next >
C/C++ Source or Header  |  1989-10-10  |  2KB  |  72 lines

  1. /***************************************************************************
  2.  * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne.  JOVE *
  3.  * is provided to you without charge, and with no warranty.  You may give  *
  4.  * away copies of JOVE, including sources, provided that this notice is    *
  5.  * included in all the files.                                              *
  6.  ***************************************************************************/
  7.  
  8. extern void    jputchar proto((int c));    /* hidden by macro */
  9.  
  10. #define jputchar(c)    jputc((c), stdout)
  11. #define jputc(c, fp)    (--(fp)->f_cnt >= 0 ? (*(fp)->f_ptr++ = (c)) : _flush((c), fp))
  12. #define jgetc(fp)    (((--(fp)->f_cnt < 0) ? filbuf(fp) : *(fp)->f_ptr++))
  13. #define f_eof(fp)    ((fp)->f_flags & F_EOF)
  14.  
  15. typedef struct _file {
  16.     int    f_cnt,        /* number of characters left in buffer */
  17.         f_bufsize,    /* size of what f_base points to */
  18.         f_fd,        /* fildes */
  19.         f_flags;    /* various flags */
  20.     char    *f_ptr,        /* current offset */
  21.         *f_base;    /* pointer to base */
  22.     char    *f_name;    /* name of open file */
  23. } File;
  24.  
  25. #define F_READ        01
  26. #define F_WRITE        02
  27. #define F_APPEND    04
  28. #define F_MODE(x)    ((x)&07)
  29. #define F_EOF        010
  30. #define F_STRING    020
  31. #define F_ERR        040
  32. #define F_LOCKED    0100    /* don't close this file upon error */
  33. #define F_MYBUF        0200    /* f_alloc allocated the buffer, so
  34.                    f_close knows to free it up */
  35. #define F_TELLALL    0400    /* whether to display info upon close */
  36. #define F_READONLY    01000    /* file is read only */
  37.  
  38. extern long    io_chars;
  39. extern int    io_lines;
  40.  
  41. extern File
  42.     *stdout;
  43.  
  44. #ifdef VMUNIX
  45. # define MAXTTYBUF    2048
  46. #else
  47. # define MAXTTYBUF    512
  48. #endif
  49.  
  50. extern int    BufSize;
  51.  
  52. extern File
  53.     *f_open proto((char *name,int flags,char *buffer,int buf_size)),
  54.     *fd_open proto((char *name,int flags,int fd,char *buffer,int bsize));
  55.  
  56. extern int
  57.     f_getint proto((File *fp)),
  58.     f_gets proto((File *fp,char *buf,size_t max)),
  59.     filbuf proto((File *fp)),
  60.     _flush proto((int c,File *fp)),
  61.     f_readn proto((File *fp,char *addr,int n));
  62.  
  63. extern void
  64.     f_close proto((File *fp)),
  65.     f_seek proto((File *fp, off_t offset)),
  66.     f_toNL proto((File *fp)),
  67.     flush proto((File *fp)),
  68.     flusho proto((void)),
  69.     fputnchar proto((char *s,int n,File *fp)),
  70.     gc_openfiles proto((void)),
  71.     putstr proto((char *s));
  72.